package com.eight.paper.admin.mapper;

import com.eight.paper.admin.domain.ExamPaper;
import com.eight.paper.admin.domain.ExamPaperDept;
import com.eight.paper.admin.domain.model.ExamPaperBody;
import com.eight.paper.admin.domain.model.UserInfo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 考试试卷Mapper接口
 * 
 * @author eight
 * @date 2023-10-31
 */
public interface ExamPaperMapper 
{
    /**
     * 查询考试试卷
     * 
     * @param id 考试试卷主键
     * @return 考试试卷
     */
    public ExamPaper selectExamPaperById(Integer id);

    /**
     * 查询考试试卷列表
     * 
     * @param examPaper 考试试卷
     * @return 考试试卷集合
     */
    public List<ExamPaper> selectExamPaperList(ExamPaper examPaper);

    /**
     * 新增考试试卷
     * 
     * @param examPaper 考试试卷
     * @return 结果
     */
    public int insertExamPaper(ExamPaper examPaper);

    /**
     * 修改考试试卷
     * 
     * @param examPaper 考试试卷
     * @return 结果
     */
    public int updateExamPaper(ExamPaper examPaper);

    /**
     * 删除考试试卷
     * 
     * @param id 考试试卷主键
     * @return 结果
     */
    public int deleteExamPaperById(Integer id);

    /**
     * 批量删除考试试卷
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteExamPaperByIds(Integer[] ids);

    List<UserInfo> selectExamUserList(Integer[] ids);

    /**
     * 查询单个考生试卷列表
     *
     * @param examPaper 考试试卷
     * @return 考试试卷集合
     */
    List<ExamPaperBody> selectExamineePaperList(ExamPaper examPaper);

    /**
     * 查询单个阅卷老师试卷列表
     *
     * @param examPaper 考试试卷
     * @return 考试试卷集合
     */
    List<ExamPaper> selectMarkPaperList(ExamPaper examPaper);

    /**
     * 批量新增考试关联部门
     * @param depts
     */
    void insertExamPaperDepts(@Param("depts") List<ExamPaperDept> depts);

    /**
     * 删除考试关联部门
     * @param paperId
     */
    void deleteExamPaperDepts(Integer paperId);
}
